import fs from 'node:fs';
import path from 'node:path';
import { fileURLToPath } from 'node:url';


function kebabToPascalCase(kebabStr: string): string {
    return kebabStr
        .split('-') // 按短横线分割成数组 ["aaa", "bb"]
        .map(word =>
            word.charAt(0).toUpperCase() + // 首字母大写
            word.slice(1).toLowerCase()    // 其余字母小写（避免输入中有大写字母）
        )
        .join(''); // 拼接成字符串
}

// 从命令行参数获取页面名
const pageName = process.argv[2];
if (!pageName) {
    console.error('请提供页面名称，例如: yarn run create-page home');
    process.exit(1);
}



// 目标文件夹路径
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const pageDir = path.join(__dirname, '../src/pages', pageName);

if (fs.existsSync(pageDir)) {
    console.error(`❌ 页面 "${pageName}" 已存在！`);
    process.exit(1);
}

// 预置的模板内容
const tsxTemplate = `import Container from "@/components/container";
import s from './index.module.less'


const ${kebabToPascalCase(pageName)} = () => {

    return <Container className={s.container}>
        This is ${kebabToPascalCase(pageName)} page
    </Container>;
}
export default ${kebabToPascalCase(pageName)};`;

const lessTemplate = `@import "src/assets/styles/mixins";
@import "src/assets/styles/variables";

.container {
    
}`;

// 创建文件夹和文件
fs.mkdirSync(pageDir, { recursive: true });
fs.writeFileSync(path.join(pageDir, 'index.tsx'), tsxTemplate);
fs.writeFileSync(path.join(pageDir, 'index.module.less'), lessTemplate);

console.log(`✅ 页面 "${pageName}" 创建成功！路径: ${pageDir}`);